package com.tgy.MyFlowable.workflow.service;

import java.util.List;
import java.util.Map;

/**
 * 任务相关通用业务接口类
 *
 * @version 1.0
 * @author: wang xiao xiang
 * @date: 2021/8/6 16:28
 */
public interface IFlwCommonTaskService {
    /**
     * 退回任务
     *
     * @param taskId        任务id
     * @param targetActId   目标节点id
     * @param targetActName 目标节点名称
     * @param comment       退回原因
     */
    void back(String taskId, String targetActId, String targetActName, String comment);

    /**
     * 转办任务
     *
     * @param taskId       任务id
     * @param assigneeList 要转办的人或角色的集合
     */
    void turnTask(String taskId, List<String> assigneeList);

    /**
     * 委托，即邀请阅示
     *
     * @param taskId   任务id
     * @param assignee 要委托的用户id
     * @param comment  委托意
     */
    void entrust(String taskId, String assignee, String comment);

    /**
     * 跳转
     *
     * @param taskId        任务id
     * @param targetActId   目标节点id
     * @param targetActName 目标节点名称
     * @param comment       跳转原因
     */
    void jump(String taskId, String targetActId, String targetActName, String comment);

    /**
     * 终止任务（即终止流程）
     *
     * @param taskId  任务id
     * @param comment 终止意见
     */
    void end(String taskId, String comment);

    /**
     * 挂起（即挂起流程）
     *
     * @param taskId 任务id
     */
    void suspend(String taskId);

    /**
     * 加签
     *
     * @param taskId       任务id
     * @param assigneeList 要加签的人的id集合
     * @param comment      加签意见
     */
    void addSign(String taskId, List<String> assigneeList, String comment);

    /**
     * 减签
     *
     * @param taskId       任务id
     * @param assigneeList 要减签的人的id集合
     * @param comment      减签意见
     */
    void delSign(String taskId, List<String> assigneeList, String comment);

    /**
     * 根据任务id获取数据
     *
     * @param taskId 任务id
     * @return 数据
     */
    Map<String, Object> taskData(String taskId);
}
